package com.shan.design.visitor;

/**
 * description
 * 访问者模式测试单元
 *
 * @author shanzheng <br/>
 * @date 11:27 2018/11/29.<br/>
 * Modified By <br/>
 */
public class VisitorTest {
    /*
    * 访问者模式是一种行为型设计模式，包含访问者和被访问元素两个重要组成部分，这些被访问元素有不同的类型
    * 不同的访问者可以对他们进行不同的访问操作。被访问元素一般不单独存在，存储在一个集合中，这个集合可以
    * 称之为“对象结构”，访问者会通过遍历对象结构实现对其中存储的元素的逐个操作。
    * 新词汇：双重分派机制
    * */

    public static void main(String[] args) {
        EmployeeList employeeList = new EmployeeList();
        Employee fte1, fte2, fte3, pte1, pte2;

        fte1 = new FulltimeEmployee("张无忌", 3200.00, 45);
        fte2 = new FulltimeEmployee("杨过", 2000.00, 40);
        fte3 = new FulltimeEmployee("段誉", 2400.00, 38);
        pte1 = new ParttimeEmployee("洪七公", 80.00, 20);
        pte2 = new ParttimeEmployee("郭靖", 60.00, 18);
        employeeList.add(fte1);
        employeeList.add(fte2);
        employeeList.add(fte3);
        employeeList.add(pte1);
        employeeList.add(pte2);
        employeeList.accept(new FADepartment());
    }

}
